package org.itheima.googleplay.http;

import java.util.ArrayList;
import java.util.List;

import org.itheima.googleplay.bean.AppInfoBean;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;

/**
 * @包名: org.itheima.googleplay.http
 * @类名: AppProtocol
 * @作者: 肖琦
 * @创建时间 : 2015-3-22 下午2:42:40
 * 
 * @描述: 应用页面的网络访问协议
 * 
 * @SVN版本: $Rev: 12 $
 * @更新人: $Author: xq $
 * @更新时间: $Date: 2015-03-22 16:33:25 +0800 (星期日, 22 三月 2015) $
 * 
 * @更新描述:
 */
public class AppProtocol extends BaseProtocol<List<AppInfoBean>>
{

	@Override
	protected String getKey()
	{
		return "app";
	}

	@Override
	protected List<AppInfoBean> parseJson(String json)
	{
		// json解析 : Gson节点解析

		// `JsonElement` : 所有的节点 都是 JsonElement 对象.
		//
		// `JsonPrimitive` : 基本的 数据类型的 节点 对象， JsonElement 的子类.
		//
		// `JsonNull` : 代表 空节点 对象，即 有 key，value 为空，JsonElement 的子类.
		//
		// `JsonObject` : 对象 数据类型的 节点 对象, JsonElement 的 子类.
		//
		// `JsonArray` : 数组 数据类型的 节点 对象, JsonElement 的 子类.

		List<AppInfoBean> list = null;

		// 1.新建json解析器
		JsonParser parser = new JsonParser();

		// 2.解析
		JsonElement root = parser.parse(json);

		// 3.获得详细类型
		JsonArray jsonArray = root.getAsJsonArray();

		for (int i = 0; i < jsonArray.size(); i++)
		{
			JsonElement element = jsonArray.get(i);

			// 详细类型
			JsonObject object = element.getAsJsonObject();

			JsonPrimitive desJson = object.getAsJsonPrimitive("des");
			JsonPrimitive downloadUrlJson = object.getAsJsonPrimitive("downloadUrl");
			JsonPrimitive iconUrlJson = object.getAsJsonPrimitive("iconUrl");
			JsonPrimitive idJson = object.getAsJsonPrimitive("id");
			JsonPrimitive nameJson = object.getAsJsonPrimitive("name");
			JsonPrimitive packageNameJson = object.getAsJsonPrimitive("packageName");
			JsonPrimitive sizeJson = object.getAsJsonPrimitive("size");
			JsonPrimitive starsJson = object.getAsJsonPrimitive("stars");

			AppInfoBean bean = new AppInfoBean();
			bean.des = desJson.getAsString();
			bean.downloadUrl = downloadUrlJson.getAsString();
			bean.iconUrl = iconUrlJson.getAsString();
			bean.id = idJson.getAsLong();
			bean.name = nameJson.getAsString();
			bean.packageName = packageNameJson.getAsString();
			bean.size = sizeJson.getAsLong();
			bean.stars = starsJson.getAsFloat();

			if (list == null)
			{
				list = new ArrayList<AppInfoBean>();
			}
			list.add(bean);
		}
		return list;
	}

}
